﻿<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <link rel="shortcut icon" href="images/logo/logo16_16.png" />
    <!--<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" />
    <script src="js/jquery-1.8.2.min.js"></script>
    <script src="bootstrap/js/bootstrap.min.js"></script>-->
    <script src="ckeditor/ckeditor.js"></script>
    <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
    <div class="container">
        <div class="row clearfix">
            <div class="row clearfix" style=" width:100%">
                <div class="col-md-12 column">

                    <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
                        <div class="navbar-header">
                            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button> <a class="navbar-brand" href="index.html">首页</a>
                        </div>
                        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                            <ul class="nav navbar-nav">
                                <li>
                                    <a href="#">随笔杂记</a>
                                </li>
                                <li>
                                    <a href="#">学习笔记</a>
                                </li>
                                <li>
                                    <a href="#">代码片段</a>
                                </li>
                                <li>
                                    <a href="#">转载分享</a>
                                </li>
                                <li>
                                    <a href="#">关于博主</a>
                                </li>

                                <!--<li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">操作<strong class="caret"></strong></a>
                            <ul class="dropdown-menu">
                                <li>
                                    <a href="#">编辑</a>
                                </li>
                                <li>
                                    <a href="#">删除</a>
                                </li>

                            </ul>
                        </li>-->
                            </ul>
                            <!--<form class="navbar-form navbar-left" role="search">
                        <div class="form-group">
                            <input class="form-control" type="text" />
                        </div> <button type="submit" class="btn btn-default">搜索</button>
                    </form>-->
                            <ul class="nav navbar-nav navbar-right" style=" padding-right:30px;">
                                <li>
                                    <img src="images/logo/logo48_48.ico" />
                                </li>
                                <li>
                                    <a href="#" style=" font-weight:bold; font-size:18px;">欢迎来到魔术猿-Vezn的个人博客</a>
                                </li>

                                <!--<li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown<strong class="caret"></strong></a>
                            <ul class="dropdown-menu">
                                <li>
                                    <a href="#">Action</a>
                                </li>
                                <li>
                                    <a href="#">Another action</a>
                                </li>
                                <li>
                                    <a href="#">Something else here</a>
                                </li>
                                <li class="divider">
                                </li>
                                <li>
                                    <a href="#">Separated link</a>
                                </li>
                            </ul>
                        </li>-->
                            </ul>
                        </div>
                    </nav>

                </div>
            </div>

            <div class="col-md-12 column">
                <div class="row clearfix">
                    <div class="col-md-12 column">
                        <div class="page-header" style="padding-top:30px;">
                            <h1>
                                Entity Framework这些技术<span style="color:red">---网站构建中</span> 
                                
                            </h1>
                            <div style=" width:100%; text-align:center; padding-top:10px;">
                                 <div style=" float:left; vertical-align:middle; padding-left:20px;"><a href="#">魔术猿-Vezn</a> 发表于2016年10月10日  <span>阅读（30）| 评论（3）</span></div>
                                <div class="btn-group">

                                    <button type="button" class="btn btn-default dropdown-toggle"
                                            data-toggle="dropdown" style=" width:100px;">
                                        操作 <span class="caret"></span>
                                    </button>
                                    <ul class="dropdown-menu" role="menu">
                                        <li><a href="#">编辑</a></li>
                                        <li><a href="#">删除</a></li>
                                        <!--<li><a href="#">其他</a></li>
                                        <li class="divider"></li>
                                        <li><a href="#">分离的链接</a></li>-->
                                    </ul>
                                </div>
                            </div>
                        </div>
                        
                    </div>
                </div>
                <div class="row clearfix">
                    <div class="col-md-12 column" style=" padding:10px 10px 10px 40px; width:90%;font-family:微软雅黑;font-size:18px;line-height:40px;">
                        在微软平台写程序有年头了，随着微软数据存取技术的持续演化，我在程序中先后使用过ODBC、DAO、ADO、ADO.NET、LINQ to SQL、 Entity Framework这些技术。

                        近几年来，Entity Framework（后文简称EF）的地位日益上升，成为微软数据存取技术的主角，也是我个人在开发应用程序时首选的数据存取技术，同时我也在博客园等专业网站上看到业界许多项目也都使用了EF。我放在CSDN下载频道的几讲Entity Framework 5课件（http://download.csdn.net/detail/bitfan/5153110），目前也有近800人下载，数十人发表评论，可以推断有不少人正在或打算学习EF，于是就萌生了写一个专门针对EF的系列文章的想法，重点谈谈我对EF的认识。

                        Entity Framework系列文章初步计划分为以下几个部分，依据内容多少，每部分可能会继续分解成几篇文章，并且会持续修改。

                        一  走马观花——了解EntityFramework

                        二  寻幽探胜——深入了解EntityFramework技术要点

                        三  学以致用——在实际开发中使用EntityFramework

                        我主要从使用者的角度向大家展示EF这一技术的魅力，但不打算深入地介绍相关的技术细节，因为那需要整本书的篇幅。本系列文章的主要目的是为大家绘制一幅EF技术导航图，点出其技术关键点，并结合我个人的使用经验，对在开发中很可能会遇到的问题给出一些技术解决方案和建议，期望这些从实践中总结出来的东西能对正在学习与使用EF技术的朋友有所帮助。

                        还必须指出：EF本身是开源的，但由于时间有限，我并没有花时间去通读整个EF的源代码（如果真要精通EF，通读其源码是必须的），只是针对我觉得特别有用的场景进行了测试，并结合自己对EF的理解进行了总结和分析，有可能有不对的地方，敬请指出以便更正。

                        金旭亮

                        2013-10-16


                        EntityFramework走马观花之

                        热身准备
                        1 Entity Framework是什么？

                        EF是一种ORM（Object-relational mapping）框架，它能把我们在编程时使用对象映射到底层的数据库结构。比如，你可以在数据库中建立一个Order表，让它与程序中的Order类建立映射关系，这样一来，程序中的每个Order对象都对应着Order表中的一条记录，ORM框架负责把从数据库传回的记录集转换为对象，也可以依据对象当前所处的具体状态生成相应的SQL命令发给数据库，完成数据的存取工作（常见的数据存取操作可简称为CRUD：Create、Read、Update、Delete）。
                        2 为什么使用Entity Framework？

                        EF本身相当复杂，学习并掌握它需要花费不少的时间，那么，为什么我们要花这个时间？

                        就我自己的亲身感受，我觉得使用EF的好处有以下几点：

                        （1）能较大地提升数据库应用的开发效率

                        基于微软平台开发的人，恐怕没有人没有用过ADO.NET。ADO.NET提供了一整套与底层数据库结构相当一致的对象模型，易于使用，运行效率也高，在EF之前，绝大多数应用都直接使用ADO.NET。

                        ADO.NET其实很不错了，那还有什么必要使用EF？

                        就我的看法，简而言之：EF给数据库应用系统开发带来了更高的效率，使用它能更容易地写出易维护、易扩展的系统，而且性能虽然比不上ADO.NET，但也足够好，能满足大多数开发场景的需求。

                        与ADO.NET不一样，EF的抽象层次较高：它把数据库映射为DbContext，把数据库中存取的数据直接映射为实体（Entity）对象，屏蔽了底层的数据库内部结构，无需直接使用下层数据存取引擎所提供的底层对象（比如ADO.NET所提供的DbConnection，DbCommands等）完成CRUD。

                        仔细回顾一下软件技术发展的历史就会发现——软件技术主要通过提高抽象层次来提升软件开发效率。EF较之ADO.NET，它正是走的这条路。

                        （2）与ADO.NET一样，EF在使用上也很灵活：

                        只要提供一个EF 的Data Provider，EF就能使用多种关系数据库，而不是仅仅地绑定到微软的SQL Server，比如我就使用过EF把数据存储到MySQL中。

                        （3）EF是开放的：

                        EF本身开源，可以访问：http://entityframework.codeplex.com/SourceControl/latest下载源码。出现任何问题，可以直接看源码去。源码之前，了无秘密。开放给EF带来了生机与活力。

                        ADO.NET与EF之间其实是“井水不犯河水”，ADO.NET的抽象层次较低，性能较高，但开发效率与应对变化的能力不如EF，这不是说用ADO.NET就不能开发出兼有高性能与易扩展的应用，而是说EF在这方面很强，直接基于ADO.NET实现EF现在己经实现的功能，需要费不少劲，而这些功能在开发中基本上绕不开它们，你不用现成的，就得自己实现，最终你会发现，自己写的比不上EF开发者写的。

                        另一个值得一提的技术是LINQ toSQL，客观地说，这也是一个优秀的技术，但命运确实不好，“既生瑜，何生亮”，它曾经与EF争宠，但现在己被打入冷宫。诸位请忘记它吧，LINQ to SQL能做的，EF都能做。EF能做的，LINQ to SQL有些则做不了。
                        3 学习EF技术的前提

                        是不是什么人都能掌握EF？

                        不是的，如果想真正地用好EF，不花一点功夫是不可能的，而一些知识与技术不具备，也是不行的。以下是我总结的“学习与掌握EF的前提条件”，如果不满足以下任何一点，先别急着一头钻进来，估计你会找不着北的。

                        （1）掌握ADO.NET和SQL Server数据库的基本使用方法

                        虽然使用EF开发基本不需要与底层数据库存取引擎和数据库打交道，但你还是必须要知道他们的基础知识。比如，如果你不知道怎样使用DbConnection对象连接数据库，不知道怎样使用DbCommand向数据库发送SQL命令，不会用SQL Server Management Studio，不会编写SQL命令，……，那么，你还是先把这些学会再说吧。

                        特别地，强烈建议掌握SQLProfiler的用法，在技术探索过程中，我们需要用它来观察EF发出的SQL命令，以便更深入地了解其特性。

                        这里简单地说一下如何安装SQLProfiler。默认情况下，免费版本的SQL Express是不带SQL Profiler这一工具的，但我们有一个取巧的方法：
                    </div>
                </div>
                <div class="row clearfix" style=" padding-top:40px;">
                    <div class="col-md-12 column">
                        <hr />
                        <p style=" font-weight:bold; font-size:25px;">评论<small>（共3条）</small></p>
                        <!--<div class="container">
                            <div class="row clearfix">-->
                                <div class="col-md-12 column">
                                    <blockquote>
                                         
                                               Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                                          <br />Integer posuere erat a ante.     
                                        <small>Someone famous  发表于 2016年10月10日 </small>       
                                    </blockquote>
                                <!--</div>
                            </div>-->
                        </div>
                        <div class="col-md-12 column">
                            <blockquote>

                                Lorem ipsum dolor sit amet, consectetur adipiscing elit.
                                <br />Integer posuere erat a ante.
                                <small>Someone famous  发表于 2016年10月10日 </small>
                            </blockquote>

                        </div>
                        <div class="col-md-12 column">
                            <blockquote>

                                Lorem ipsum dolor sit amet, consectetur adipiscing elit.
                                <br />Integer posuere erat a ante.
                                <small>Someone famous  发表于 2016年10月10日 </small>
                            </blockquote>

                        </div>
                    </div>
                </div>
                <div class="row clearfix" style=" padding-top:40px;">
                    <div class="col-md-12 column">
                        <!--<fieldset>
                            <legend style=" font-weight:bold; font-size:20px;">评论</legend>-->
                            <div>
                                <textarea class="ckeditor" name="editor1"></textarea>
                            </div>
                            <div style=" padding-top:20px; text-align:right">
                                <input type="button" value="提交" name="btnCommit" style=" width:80px" />
                                <input type="reset" value="重置" name="btnConcel" style=" width:80px" />
                            </div>
                       <!-- </fieldset>-->


                    </div>
                </div>
                <div class="row clearfix" style=" padding:10px;text-align:center;">
                    <div class="col-md-12 column">
                        <hr>
                        <p>
                            闽ICP备16027414号  Copyright &copy; 2016-2016, <a href="http://veznwang.com/">魔术猿</a> - Vezn Wang. All rights reserved.
                        </p>
                    </div>
                </div>

            </div>
        </div>
    </div>
     <script>
         
         CKEDITOR.replace('editor1', { height: '200',width:'80%' });
        
     </script>

</body>
</html>
